from collections import deque
for _ in range(int(input())):
n = int(input())
a = [int(i) for i in input().split()]
Min, Max, t1, t2 = [], [], deque(), deque()
e= 0
for i in range(n) :
if e != a[i] :
Min.append(a[i])
Max.append(a[i])
for k in range(e+1, a[i]) :
t1.append(k)
t2.append(k)
e = a[i]
else :
Min.append(t1.popleft())
Max.append(t2.pop())
print(*Min)
print(*Max)
#include<bits/stdc++.h>
using namespace std;
int t, n, q;
vector<int> maxp, minp;
set<int> minheap, maxheap;
int main(){
cin>>t;
while (t){
t--;
cin>>n;
maxp.clear();minp.clear();
int now=0;
for (int i=0; i<n; i++){
cin>>q;
if (q!=now){
maxp.push_back(q);
minp.push_back(q);
for (int j=now+1; j<q; j++){
maxheap.insert(j);
minheap.insert(j);
}
now=q;
}else{
int x= *maxheap.rbegin();
maxp.push_back(x);
maxheap.erase(x);
x= *minheap.begin();
minp.push_back(x);
minheap.erase(x);
}
}
for (int i=0; i<n; i++) cout<<minp[i]<<" ";
cout<<endl;
for (int i=0; i<n; i++) cout<<maxp[i]<<" ";
cout<<endl;
}
}
219A - k-String | 952A - Quirky Quantifiers |
451B - Sort the Array | 1505H - L BREAK into program |
171E - MYSTERIOUS LANGUAGE | 630D - Hexagons |
1690D - Black and White Stripe | 1688D - The Enchanted Forest |
1674C - Infinite Replacement | 712A - Memory and Crow |
1676C - Most Similar Words | 1681A - Game with Cards |
151C - Win or Freeze | 1585A - Life of a Flower |
1662A - Organizing SWERC | 466C - Number of Ways |
1146A - Love "A" | 1618D - Array and Operations |
1255A - Changing Volume | 1710C - XOR Triangle |
415C - Mashmokh and Numbers | 8A - Train and Peter |
591A - Wizards' Duel | 1703G - Good Key Bad Key |
1705A - Mark the Photographer | 1707A - Doremy's IQ |
1706B - Making Towers | 1325B - CopyCopyCopyCopyCopy |
1649C - Weird Sum | 1324B - Yet Another Palindrome Problem |